const orderModel = require('../db/order')
const cartModel = require('../db/cart')
//添加响应模块
const xy = require('../utils/xy')
//日志错误添加
const writeErr = require('../utils/writeErr')

//返回
module.exports = {
  async create(req,resp){
    //接收数据
    let {cartIds,eatWay,totalPrice, userId, dishName} = req.body
    // console.log(req.body)
    //将购物车ids转成数组
    cartIds = cartIds.split(',')
    console.log(cartIds)
    //支付
    let payStatus = '已支付'
    // 订单号
    let orderNo = parseInt(Math.random() * 90000000) + 10000000
      while (true) {
        let docs = await orderModel.findOne({ orderNo })
        if (!docs) {
          break
        }
        orderNo = parseInt(Math.random() * 90000000) + 10000000
      }
      // 取餐码
        // 获取当前时间日期对象
        let date = new Date()
        // 设置今天0点0分0秒
        date.setHours(0)
        date.setMinutes(0)
        date.setSeconds(0)
        date.setMilliseconds(0)
        // 今天0点0分0秒的时间戳
        let startTime = date.getTime()
        // 设置今天23点59分59秒
        date.setHours(23)
        date.setMinutes(59)
        date.setSeconds(59)
        date.setMilliseconds(999)
        // 今天23点59分59秒的时间戳
        let endTime = date.getTime()
        // 到数据库中查询 - 此时有多少今天的数据
        let docs = await orderModel.count({createdAt: {$gt: startTime, $lt: endTime}})
        // 取餐码是今天的数据数量 + 1
        let code = docs + 1
    
    //添加到数据库
      docs = await orderModel.insertMany({
        orderNo,
        payStatus,
        code,
        eatWay,
        totalPrice,
        userId,
        dishNum: cartIds.length,
        dishName,
        createdAt:+new Date()
    })
    
    cartIds.forEach(async id => {
      console.log(id)
      // 将当前结算的购物车数据删除
      await cartModel.deleteOne({_id:id})
  })
    xy(resp,200,'订单生成成功')
  },
  //获取所有订单
  async getAll(req,resp){
    let {userId} = req.params
    try{
      let docs = await orderModel.find({userId})
    xy(resp,200,'订单获取成功',{
      orders:docs
    })
    }catch(err){
      writeErr(err)
      xy(resp,513,'订单获取失败')
    }
  }
}
